Telegram Group Search
💡 Шпаргалка: функция с `yield` всегда возвращает генератор

Если в функции присутствует хотя бы один yield, Python преобразует её в генератор — независимо от того, выполнится ли yield при вызове.

Обычное поведение с возвращением списка:
def greet(as_list: bool):
message = 'hello!'
if as_list:
message_list = []
for char in message:
message_list += char
return message_list
else:
return message


>>> greet(as_list=True)
['h', 'e', 'l', 'l', 'o', '!']
>>> greet(as_list=False)
'hello!'


А вот что происходит, если использовать генератор с yield:
def greet(as_generator: bool):
message = 'hello!'
if as_generator:
for char in message:
yield char
else:
return message


>>> greet(as_generator=True)
<generator object greet at 0x0000023F0A066F60>
>>> greet(as_generator=False)
<generator object greet at 0x0000023F0A066F60>


Даже при as_generator=False функция всё равно возвращает объект генератора. Это связано с тем, что наличие yield в теле функции делает её генераторной на уровне определения.

📌 Это важно учитывать при проектировании логики, особенно если ожидается обычное значение, а не итератор.

Библиотека питониста #буст
🎉 Python правит миром

Согласно майскому рейтингу TIOBE, Python снова побил рекорды:
🟠 +2.2% за месяц — теперь 25.35%
🟠 Это абсолютный максимум популярности языка за всю историю TIOBE (исключение — Java в 2001 году)
🟠 Отрыв от второго места (C++) — более 15%!

Почему не все ещё на Python?

Пока язык остаётся медленным и интерпретируемым — он не годится для realtime и критичных к сбоям систем. Но во всех остальных областях Python медленно, но уверенно становится стандартом.

➡️ Источник: TIOBE Index May 2025

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
📍 How to: кэширование в Python с помощью flexicache

В Python удобно использовать декораторы для кэширования результатов функций и методов — как в оперативной памяти, так и во временных хранилищах вроде memcached. Один из наиболее гибких инструментов для этого — flexicache из библиотеки fastcore.

flexicache — это декоратор, который поддерживает:
• LRU-кэширование (удаление наименее используемых элементов),
• политику истечения кэша по времени — time_policy,
• инвалидирование кэша при изменении файла — mtime_policy.

➡️ Пример: time_policy
@flexicache(time_policy(0.1))
def random_func():
return randint(1, 1000)

assert random_func() == random_func()
sleep(0.2)
assert random_func() != random_func()


➡️ Пример: mtime_policy. Инвалидирование при изменении файла main.py
@flexicache(mtime_policy('main.py'))
def random_func():
return randint(1, 1000)

Path('main.py').touch() # обновление времени изменения


➡️ Пример: совмещение политик
@flexicache(time_policy(0.1), mtime_policy('main.py'))
def random_func():
return randint(1, 1000)


Кэш сбрасывается либо по времени, либо при обновлении файла — в зависимости от того, что произойдёт первым.

➡️ Пример: LRU-кэширование
@flexicache(maxsize=2)
def random_func(v):
return randint(1, 1000)

random_func(1)
random_func(2)
random_func(3) # результат для аргумента 1 будет удалён


➡️ Пример: удобный timed_cache. Для кэша с таймаутом и ограничением размера
from fastcore.xtras import timed_cache

@timed_cache(0.1, maxsize=2)
def random_func(v):
return randint(1, 1000)


📌 flexicache — гибкий и мощный инструмент для продвинутого кэширования в Python. Поддерживает политики истечения, комбинирование стратегий и заменяет стандартный lru_cache.

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🚨 Обновления безопасности для Django: 5.2.1, 5.1.9 и 4.2.21

7 мая 2025 года команда Django выпустила обновления, устраняющие уязвимость CVE-2025-32873, связанную с функцией strip_tags(). Уязвимость могла привести к отказу в обслуживании (DoS), если входные данные содержали большие последовательности незакрытых HTML тегов.

Теперь при обнаружении таких ошибок функция вызывает исключение SuspiciousOperation, предотвращая проблемы с производительностью.

Рекомендуем обновить Django до версий 5.2.1, 5.1.9 и 4.2.21. Обновления доступны через:
pip install --upgrade Django


Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
*️⃣ Промт дня: оптимизация кода и повышение его производительности

Когда проект растет, вопросы производительности становятся критическими. Оптимизация кода — важный шаг на пути к масштабированию приложений, особенно когда дело касается обработки больших объёмов данных, многозадачности или работы с сетевыми запросами. Python, несмотря на свою удобство и читаемость, требует внимания к деталям в области производительности.

Промт:
Проанализируй текущий код на Python и оптимизируй его для повышения производительности.
• Произведи замер времени работы функций с использованием time или timeit.
• Используй Cython, NumPy или pandas для ускорения вычислений, где это возможно.
• Оптимизируй работу с памятью, избавляясь от лишних копий данных и используя эффективные структуры данных (например, deque, defaultdict, set).
• Применяй асинхронность (asyncio) или многозадачность (с помощью concurrent.futures или multiprocessing) для параллельной обработки данных.
• Профилируй код с помощью cProfile, line_profiler, чтобы выявить узкие места в производительности.


➡️ Задача:
Уменьшить время работы программы и потребление ресурсов, обеспечив эффективную обработку данных и улучшение отклика системы.

➡️ Рекомендуемые инструменты и методы:
🟠 timeit и cProfile — для замеров производительности,
🟠 NumPy, pandas — для векторизованных операций с данными,
🟠 asyncio или multiprocessing — для асинхронной и параллельной обработки,
🟠 memory_profiler — для анализа потребления памяти.

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
📰 Сокращения в Microsoft затронули команду Faster CPython

По информации от Python core developer'а Бретта Кэннона (Brett Cannon), Microsoft провела волну сокращений, в результате которой из компании ушли три ключевых участника проекта Faster CPython:
📍 Mark Shannon — технический лидер проекта Faster CPython и один из его инициаторов
📍 Eric Snow — core-девелопер CPython и автор идеи подмодуля subinterpreters
📍 Irit Katriel — одна из ведущих разработчиц в области исключений и трассировки в Python

🐍 Что такое Faster CPython

Faster CPython — это проект, стартовавший с релиза Python 3.11 при поддержке Microsoft, цель которого — повысить производительность интерпретатора Python, сохранив совместимость с существующим кодом. Благодаря работе команды, Python 3.11 и 3.12 получили значительный прирост скорости (до 25–60% в отдельных сценариях).

🤔 Что это значит для сообщества

📍 Потеря ключевых инженеров ставит под вопрос будущее темпа развития Faster CPython.
📍 Однако сам проект открыт и интегрирован в официальный CPython, а значит — работа продолжится под эгидой Python Software Foundation и сообщества.
📍 Многие выразили поддержку уволенным разработчикам — их вклад в Python остается фундаментальным.

💬 Что вы думаете об этих изменениях в команде Faster CPython? Как это скажется на будущем Python?

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
Python Книги - канал для скачивания Python книг только на русском языке

Что в нашем канале:
1. Книги по питону, которые помогут вам подготовится к собеседованию.
2. Книги на русском языке
3. Много книг для начинающих
4. Все книги можно скачать в 2 клика

Подписывайтесь и качайте книги: @pythonknigiru

Реклама. Киренкина Марина Дмитриевна, ИНН 345702417736. Erid 2VtzquznN8k
🛠 Устанавливаем `pre-commit` через `uv`: проще, быстрее, удобнее

pre-commit — один из лучших инструментов для запуска проверок перед коммитом в Git. Но установка через pip часто вызывает раздражение: нужен Python, виртуалки, обновления вручную…

💡 Решение — использовать uv: супербыстрый Python-менеджер, который берёт всё под контроль — от версий Python до окружений.

Установить pre-commit с uv теперь можно одной командой:
uv tool install pre-commit --with pre-commit-uv


⚡️ После установки:
pre-commit будет доступен глобально;
— Python-хуки будут устанавливаться через uv, что намного быстрее.

Примеры использования:
pre-commit --version
pre-commit install
pre-commit run --all-files


🔄 Обновление:
uv tool upgrade pre-commit


Библиотека питониста #буст
🚨 Смешные новости про IT теперь в одном канале

Мы запустили @hahacker_news — наш новый юмористический IT-канал.

Туда будем постить лучшие шутки до 19го мая, которые вы присылали на конкурс.

👉 @hahacker_news — голосование уже идёт, переходите, читайте, угарайте и оставляйте реакции
🤓 Разбираемся в SOLID — 5 принципов, которые спасут ваш код

В карточках рассказали, как работают принципы SOLID. Если в вашем коде они есть — вы на правильном пути к чистой архитектуре.

Еще больше примеров и объяснений — в статье: https://proglib.io/sh/FdN5qxyPle

Библиотека питониста #буст
Самые догадливые, пишите ответ в комментах 👇

Небольшая подсказка — это термин относится к Python.

Прячем ответы под спойлер, чтобы не спалить остальным.

Библиотека питониста #междусобойчик
📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих»

Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!

🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
2025/05/17 20:13:43
Back to Top
HTML Embed Code: